package br.com.dallas.parametro.manager;

import java.io.IOException;
import java.io.Serializable;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import br.com.dallas.parametro.controller.ParametroController;
import br.com.dallas.parametro.javabean.ParametroBean;
import br.com.dallas.util.exception.AlterarObjetoException;
import br.com.dallas.util.exception.ClasseNaoEncontradaException;
import br.com.dallas.util.exception.ConexaoException;
import br.com.dallas.util.exception.ConsultarObjetoException;

@ManagedBean(name="parametroMamagerBean")
@ViewScoped
public class ParametroManagerBean implements Serializable
{
	private static final long serialVersionUID = 1L;
	private ParametroBean parametroBean;
	private int[] tempoAtualizacaoValores = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
	private int[] linhaTabelaValores = {4, 6, 8};
	private int[] quantidadeViaParaImpressao = {1, 2};
	
	public ParametroBean getParametroBean()
	{
		return parametroBean;
	}
	
	public int[] getTempoAtualizacaoValores()
	{
		return tempoAtualizacaoValores;
	}
	
	public int[] getLinhaTabelaValores()
	{
		return linhaTabelaValores;
	}
	
	public int[] getQuantidadeViaParaImpressao()
	{
		return quantidadeViaParaImpressao;
	}

	@PostConstruct
	public void init()
	{
		carregarParametro();
	}
	
	private void carregarParametro()
	{
		ParametroController parametroController = null;
		try
		{
			parametroBean = new ParametroBean();
			parametroController = new ParametroController();
			parametroController.consultarParametro(parametroBean);
		}
		catch(ConsultarObjetoException e)
		{
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(e.getMessage()));
		}
		catch (ConexaoException e)
		{
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(e.getMessage()));
		}
		catch (ClasseNaoEncontradaException e)
		{
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(e.getMessage()));
		}
		finally
		{
			if (parametroController != null)
			{
				parametroController.close();
				parametroController = null;
			}
		}
	}
	
	public void alterarParametro()
	{
		ParametroController parametroController = null;
		try
		{
			if (parametroBean != null)
			{
				parametroController = new ParametroController();
				parametroController.atualizarParametro(parametroBean);
				FacesContext.getCurrentInstance().getExternalContext().redirect(FacesContext.getCurrentInstance().getExternalContext().getRequestContextPath() + "/view/dispatcher/SucessoAdministrador.jsf");
			}
		}
		catch(AlterarObjetoException e)
		{
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(e.getMessage()));
		}
		catch (ConexaoException e)
		{
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(e.getMessage()));
		}
		catch (ClasseNaoEncontradaException e)
		{
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(e.getMessage()));
		}
		catch (IOException e)
		{
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(e.getMessage()));
		}
		finally
		{
			if (parametroController != null)
			{
				parametroController.close();
				parametroController = null;
			}
		}
	}
}
